home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / asm-generic / bug.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  2.6 KB  |  120 lines

  1. #ifndef _ASM_GENERIC_BUG_H
  2. #define _ASM_GENERIC_BUG_H
  3.  
  4. #include <linux/compiler.h>
  5.  
  6. #ifdef CONFIG_BUG
  7.  
  8. #ifdef CONFIG_GENERIC_BUG
  9. #ifndef __ASSEMBLY__
  10. struct bug_entry {
  11.     unsigned long    bug_addr;
  12. #ifdef CONFIG_DEBUG_BUGVERBOSE
  13.     const char    *file;
  14.     unsigned short    line;
  15. #endif
  16.     unsigned short    flags;
  17. };
  18. #endif        /* __ASSEMBLY__ */
  19.  
  20. #define BUGFLAG_WARNING    (1<<0)
  21. #endif    /* CONFIG_GENERIC_BUG */
  22.  
  23. #ifndef HAVE_ARCH_BUG
  24. #define BUG() do { \
  25.     printk("BUG: failure at %s:%d/%s()!\n", __FILE__, __LINE__, __func__); \
  26.     panic("BUG!"); \
  27. } while (0)
  28. #endif
  29.  
  30. #ifndef HAVE_ARCH_BUG_ON
  31. #define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while(0)
  32. #endif
  33.  
  34. #ifndef __WARN
  35. #ifndef __ASSEMBLY__
  36. extern void warn_on_slowpath(const char *file, const int line);
  37. extern void warn_slowpath(const char *file, const int line,
  38.         const char *fmt, ...) __attribute__((format(printf, 3, 4)));
  39. #define WANT_WARN_ON_SLOWPATH
  40. #endif
  41. #define __WARN() warn_on_slowpath(__FILE__, __LINE__)
  42. #define __WARN_printf(arg...) warn_slowpath(__FILE__, __LINE__, arg)
  43. #else
  44. #define __WARN_printf(arg...) do { printk(arg); __WARN(); } while (0)
  45. #endif
  46.  
  47. #ifndef WARN_ON
  48. #define WARN_ON(condition) ({                        \
  49.     int __ret_warn_on = !!(condition);                \
  50.     if (unlikely(__ret_warn_on))                    \
  51.         __WARN();                        \
  52.     unlikely(__ret_warn_on);                    \
  53. })
  54. #endif
  55.  
  56. #ifndef WARN
  57. #define WARN(condition, format...) ({                        \
  58.     int __ret_warn_on = !!(condition);                \
  59.     if (unlikely(__ret_warn_on))                    \
  60.         __WARN_printf(format);                    \
  61.     unlikely(__ret_warn_on);                    \
  62. })
  63. #endif
  64.  
  65. #else /* !CONFIG_BUG */
  66. #ifndef HAVE_ARCH_BUG
  67. #define BUG()
  68. #endif
  69.  
  70. #ifndef HAVE_ARCH_BUG_ON
  71. #define BUG_ON(condition) do { if (condition) ; } while(0)
  72. #endif
  73.  
  74. #ifndef HAVE_ARCH_WARN_ON
  75. #define WARN_ON(condition) ({                        \
  76.     int __ret_warn_on = !!(condition);                \
  77.     unlikely(__ret_warn_on);                    \
  78. })
  79. #endif
  80.  
  81. #ifndef WARN
  82. #define WARN(condition, format...) ({                    \
  83.     int __ret_warn_on = !!(condition);                \
  84.     unlikely(__ret_warn_on);                    \
  85. })
  86. #endif
  87.  
  88. #endif
  89.  
  90. #define WARN_ON_ONCE(condition)    ({                \
  91.     static int __warned;                    \
  92.     int __ret_warn_once = !!(condition);            \
  93.                                 \
  94.     if (unlikely(__ret_warn_once))                \
  95.         if (WARN_ON(!__warned))             \
  96.             __warned = 1;                \
  97.     unlikely(__ret_warn_once);                \
  98. })
  99.  
  100. #define WARN_ONCE(condition, format...)    ({            \
  101.     static int __warned;                    \
  102.     int __ret_warn_once = !!(condition);            \
  103.                                 \
  104.     if (unlikely(__ret_warn_once))                \
  105.         if (WARN(!__warned, format))             \
  106.             __warned = 1;                \
  107.     unlikely(__ret_warn_once);                \
  108. })
  109.  
  110. #define WARN_ON_RATELIMIT(condition, state)            \
  111.         WARN_ON((condition) && __ratelimit(state))
  112.  
  113. #ifdef CONFIG_SMP
  114. # define WARN_ON_SMP(x)            WARN_ON(x)
  115. #else
  116. # define WARN_ON_SMP(x)            do { } while (0)
  117. #endif
  118.  
  119. #endif
  120.